home *** CD-ROM | disk | FTP | other *** search
/ Info-Mac 4 / Info_Mac IV CD-ROM (Pacific HiTech Inc.)(August 1994).iso / Science / MAL ©P.f.Howden 1⁄1⁄89 / TURN POINTS < prev   
Text File  |  1991-10-08  |  6KB  |  95 lines

  1. 1 CLS:CLEAR:PRINT"TURNING POINTS":PRINT"MENU :0=  SINGLE VARIABLE T/Ps & 2-VARIABLE TEST(for Max/Min):":PRINT"          1= 2-VARIABLE T/Ps":INPUT "MENU SELECT=";Z1:IF Z1=0 THEN 910
  2. 3 PRINT"TYPE EQUATION ON LINE  15  F=5*X^2+5*Y^2+6*X*Y-32":PRINT"During iteration, X=X(0), Y=X(1)":DEFDBL A,F-H,X-Y
  3. 4 PRINT "PRESS SPACE BAR TO CONTINUE" : PRINT "OR <BREAK> TO ENTER EQUATION"
  4. 8 A$=INKEY$ : IF A$<>" " THEN 8
  5. 9 GOTO 100
  6. 10 X(0)=X(0)+Z:GOSUB 11:F1=F:X(0)=X(0)-2*Z:GOSUB 11:F2=F:GOSUB 12:RETURN
  7. 11 X=X(0):Y=X(1):GOSUB 15:RETURN
  8. 12 F=(F1-F2)/(2*Z):X(0)=X(0)+Z:RETURN
  9. 15 F=5*X^2+5*Y^2+6*X*Y-32
  10. 16 RETURN
  11. 100 DEF FNS(X)=LOG(ABS(X)+SQR(X*X+1))
  12. 140 N=2:NN=N:N=N-1:INPUT "ACCUR D(.00001?)=";D:INPUT "DIFFERENTIAL Z(.00001?)=";Z
  13. 143 PRINT"If iterations are diverging,PRESS SPACE BAR.":PRINT
  14. 145 INPUT "PRESET equation CONSTANTS? (Y/N)" ; T$ : IF LEFT$(T$,1)="Y" THEN INPUT "HOW MANY" ; G : DIM G(G) : FOR I=0 TO G-1 : PRINT "G(" ; I ; ")=" ; : INPUT G(I) : NEXT I
  15. 150 DIM F(1),X(NN),P(NN),S1(NN),H(NN),X1(NN),S(NN),S2(NN),X2(NN),R1(NN),A(NN),R(NN),A1(NN)
  16. 155 INPUT "Maximum Number of ITERATIONS (200?)=" ;M:
  17. 170 FOR I=0 TO N : PRINT " STARTING X(" ; I ; ")  (frequently  0 or ±1)=" ; : INPUT X(I) : X2(I)=X(I) : NEXT I
  18. 180 INPUT "R (usually 0, but 5 or more if hard to converge)=";R:FOR I=0 TO N:R1(I)=R: NEXT I:INPUT "GAIN (usually 1,less if hard to converge,eg .3,.1)=";U
  19. 190 FOR I=0 TO N : S1(I)=1 : P(I)=0 : A(I)=I : A1(I)=I : NEXT I
  20. 200 K1=0 : K2=0 
  21. 220 INPUT "RE-ARRANGE  EQUATIONS? (Y/N)" ; T$ : IF LEFT$(T$,1)="N" THEN GOTO 250
  22. 240 PRINT "ENTER EQUATION SEQUENCE" : PRINT : PRINT "ORIGINAL F( ) ","NEW SEQUENCE" : FOR I=0 TO N : PRINT I,: INPUT A(I) : NEXT I
  23. 250 INPUT "SIGN SEARCH? (Y/N)" ; T$ : IF LEFT$(T$,1)="Y" THEN GOSUB 600 : GOTO 240
  24. 270 FOR I=0 TO N : PRINT "SIGN F(" ; I ; ")  (-1 or 1)=" ; : INPUT S(I) : NEXT I : FOR I2=0 TO N : I=A(I2) : X(I)=X2(I) : R(I)=R1(I2) : S1(I)=1 : P(I)=0  : NEXT I2 : GOSUB 300 : IF N=0 THEN GOTO 270
  25. 275 GOTO 220
  26. 300 PRINT : PRINT : PRINT " SIGN COMB." ;
  27. 305 FOR I=0 TO N : PRINT TAB(3*I+12) ; S(I) ; : NEXT I : PRINT
  28. 310 PRINT : PRINT "EQU.SEQU." ;
  29. 315 FOR I=0 TO N : PRINT TAB(3*I+12) ; A(I) ; : NEXT I : PRINT
  30. 320 PRINT : PRINT "STEP" ; TAB(11) ; "P" ; TAB(18) ; "R" ; TAB(26) ; " X,Y ITERATION"
  31. 325 FOR K=1 TO M : L1=-1
  32. 326 FOR I2=0 TO N : I=A(I2) : I1=A1(I2)
  33. 330 J=I+1 : ON J GOSUB 10,11
  34. 333 IF ABS(X(I1))>1000000! OR ABS(F)>1E+18 THEN PRINT "X,Y OR F ABOVE LIMIT SET IN LINE 333" : K=M : Q=1 : GOTO 495
  35. 335 H(I)=S(I)*FNS(F)*SGN(F) : S2(I)=SGN(H(I))
  36. 340 IF K1=1 THEN GOSUB 505 : IF K1=1 THEN GOSUB 10 : GOTO 335
  37. 345 IF S2(I)*S1(I)> 0 THEN P(I)=P(I)+U: R(I)=R(I)-U
  38. 400 R(I)=R(I)+U : X1(I1)=X(I1)+H(I)*2^(P(I)/3-R(I)-1/3)
  39. 405 PRINT TAB(2) ; K ; TAB(10) ; P(I) ; TAB(17) ; R(I) ; TAB(25) ; X1(I1)
  40. 410 IF ABS(X1(I1)-X(I1))<D THEN L1=L1+1
  41. 415 X(I1)=X1(I1) : S1(I)=S2(I)
  42. 416 NEXT I2 : IF L1<>N THEN GOTO 485
  43. 420 PRINT : PRINT "TURN POINT SOLUTIONS" ; TAB(27) ; " RESIDUALS"
  44. 425 FOR I3=0 TO N : I=A1(I3) : I1=A(I3)
  45. 435 IF L1=N THEN J=I+1 : ON J GOSUB 10,11
  46. 440 F(I3)=F
  47. 445 NEXT I3:PRINT "Xtp =" ; X1(0) ; TAB(26) ; "Fx =";F(0):PRINT "Ytp =" ; X1(1) ; TAB(26) ; "Fy =";F(1)
  48. 450 PRINT : PRINT "SIGN COMB." ;
  49. 455 FOR I=0 TO N : PRINT TAB(3*I+12) ; S(I) ; : NEXT I
  50. 460 PRINT : PRINT "EQU.SEQU." ;
  51. 465 FOR I=0 TO N : PRINT TAB(3*I+12) ; A(I) ; : NEXT I : PRINT
  52. 470 INPUT"TO CONT,PRESS RETURN";C$
  53. 480 K=M : Q=0 : GOTO 495
  54. 485 A$=INKEY$ : IF A$<>"" THEN K=M : Q=1 : GOTO 495
  55. 490 Q=2
  56. 495 PRINT:NEXT K
  57. 496 IF Q<>2 THEN RETURN
  58. 500 PRINT "NOT CONVERGING IN " ; M ; " ITERATIONS"
  59. 501 PRINT : PRINT "SIGN COMB" ;
  60. 502 FOR I=0 TO N : PRINT TAB(3*I+12) ; S(I) ; : NEXT I
  61. 503 PRINT : PRINT "EQU. SEQU." ;
  62. 504 FOR I=0 TO N : PRINT TAB(3*I+12) ; A(I) ; : NEXT I : PRINT :INPUT "TO CONT, PRESS RETURN";C$:RETURN
  63. 505 IF K2=1 THEN K2=0 : S1(I)=S2(I) : GOTO 515
  64. 510 PRINT F; TAB(25) ; X(I) : IF S1(I)*S2(I)<0 THEN K1=0 : PRINT : PRINT "ITER" ; TAB(11) ; "P" ; TAB(18) ; "R" ; TAB(28) ; "ROOT" : PRINT : PRINT : RETURN
  65. 515 X(I)=X(I)+L : RETURN
  66. 600 T1=2^NN-1 : FOR T2=0 TO T1 : T5=T2 : FOR I2=0 TO N : I=A(I2) : X(I)=X2(I) : R(I)=R1(I2) : S1(I)=1 : P(I)=0 : NEXT I2
  67. 610 FOR I=N TO O STEP -1 : T3=T5/2 : T4=INT(T3) : IF T3-T4<.001 THEN S(I)=-1 : GOTO 630
  68. 620 S(I)=1
  69. 630 T5=T4 : NEXT I : GOSUB 300 : NEXT T2
  70. 640 PRINT : PRINT "ALL SIGN COMBINATIONS EXHAUSTED" : INPUT "RE-ARRANGE EQUATIONS? (Y/N)" ; T$ : IF LEFT$(T$,1)="N" THEN PRINT : INPUT "END OF PROGRAM,PRESS RETURN";C$:END
  71. 650 RETURN
  72. "====================================
  73. 910 CLS:INPUT "MENU:0=  SINGLE VARIABLE T/Ps: 1=  2-VARIABLE TEST:";B
  74. 920 IF B=0 THEN PRINT" TYPE FUNCTION AS:  1000 F=X^7+28*X^4-480":GOTO 960
  75. 950 PRINT"INCLUDE Y ORDINATE at TURNING POINT":PRINT" eg 1000 Y=-3.162:F=5*X^2+5*Y^2+6*X*Y-32"
  76. 960 CLEAR:DEFDBL A-Z:INPUT "STARTING X=";X:INPUT "R (usually 0, but 5 or more if hard to converge)=";R1:INPUT "SIGN (-1or1)=";S
  77. 970 INPUT "ACCURACY D(.000001?)=";D:INPUT "SEARCH INCREMENT L2(±.1? Nonsearch solution if L2=0)=";L2:INPUT "DIFFERENTIAL Z(.00001?)=";Z
  78. 973 INPUT "PRESET equation CONSTANTS G=";G
  79. 975 PRINT:PRINT"X VALUES" TAB(30) "SLOPE VALUES"
  80. 980 P=0:S1=1:R=R1:L=L2:L1=0
  81. 990 X=X+Z:GOSUB 1000:F1=F:X=X-2*Z:GOSUB 1000:F2=F:GOSUB 1090:GOTO 1100
  82. 1000 F=X^7+28*X^4-480
  83. 1050 RETURN
  84. 1090 F=(F1-F2)/(2*Z):X=X+Z:RETURN
  85. 1100 IF L=0 THEN 1160
  86. 1120 IF L1=0 THEN L1=1:S3=SGN(F)
  87. 1140 S4=SGN(F):PRINT X ;TAB(30);F:IF S3*S4>0 THEN X=X+L:GOTO 990
  88. 1160 L=0:Q=S*LOG(ABS(F)+1)*SGN(F):S2=SGN(Q):IF S1*S2>0 THEN P=P+1:R=R-1
  89. 1180 R=R+1:X1=X+Q*2^(P/3-R):PRINT X1
  90. 1190 IF ABS(X1-X)<D THEN BEEP:PRINT"AT TURNING POINT,Xtp=";X:PRINT"   RESIDUAL=";F:GOSUB 1000:PRINT"FUNCTION VALUE AT TURN POINT,F=";F:PRINT:INPUT "TO CONTINUE,PRESS RETURN";C$:GOTO 1210
  91. 1200 X=X1:S1=S2:GOTO 990
  92. 1210 IF L2=0 THEN 960
  93. 1220 S=-1*S:X=X1+L2/2:GOTO 980
  94.              MACINTOSH LISTING
  95.